A wide array of consumer and business electronic devices can be upgraded by receiving (i.e., downloading) application programs and data files from an external network, such as the Internet. Initially, this method of upgrading electronic devices was limited primarily to personal computers. Increasingly, however, software upgrades can be applied to ever smaller devices, including cell phones, handheld computers (such as a PalmPilot™) MP3 players, and the like.
Quite often, application programs and data files are encrypted prior to transmission and then decrypted by the downloading device. Encryption is used to prevent the downloaded application programs and data files from being corrupted and/or tampered with during transmission. The application programs and data files are encrypted along with redundancy checksum values derived from the application programs and data files. If the redundancy checksum values are not correct after decryption, the downloaded software may be corrupted and is discarded. Encryption also is used to prevent the downloaded application programs and data files from being illegally copied onto unauthorized devices. Many encryption systems use an embedded encryption key that is unique to each downloading device. Unauthorized devices do not have the correct encryption key and, therefore, cannot decrypt the encrypted downloaded software.
Conventional encryption and decryption techniques require a good deal of memory and processing power. For example, the popular Rivest-Shamir-Adleman (RSA) public key encryption algorithm (and similar cyphers) use large binary numbers (i.e., 1024 bits) and exponential mathematics to encrypt and decrypt data. This requires a great deal of random access memory (RAM) to hold large numbers and also requires wide (i.e., 64 bits or greater) data processors to perform the calculations in a reasonably short period of time.
Unfortunately, many of the smaller devices (e.g. cell phones, handheld computers, MP3 players) that are capable of receiving software upgrades are controller by small (i.e., 8 bit or 16 bit) microcontrollers containing small FLASH memories. These types of devices do not have the required memory size and processing throughput necessary to implement conventional encryption and decryption schemes, such as the RSA public key encryption algorithm.
Therefore, there is a need in the art for improved encryption and decryption systems that do not require large memories and high processing throughput. In particular, there is a need for an encryption and decryption system for use with 8-bit and 16-bit microprocessors, microcontrollers, and similar small scale processors.